/* 
 * File:   Lista.h
 * Author: max
 *
 * Created on October 6, 2012, 9:58 AM
 */

#ifndef LISTA_H
#define	LISTA_H

#include "Nodo.h"

namespace TP { namespace Colecciones {

    class Lista {

    public:
        
        Lista();
        
        virtual ~Lista();
        
        bool Vacia();

        void* Agregar (void* pDato);
        
        void* Remover (void* pDato);

        void* Primero();
        
        void* Ultimo();
        
        void* Siguiente (void* pDato);
        
        void Limpiar();
        
        long Count();
        
    private:
        
        Nodo* raiz;
        
        Nodo* NodoUltimo ();
        
        Nodo* GetNodo (void* pDato);
    };
    
}}


#endif	/* LISTA_H */

